﻿using AexoManager.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using log4net;
using log4net.Config;
using AexoManager.Helpers;
using AexoManager.Datos;
using AexoManager.BussinesLogic;

namespace AexoManager.Controllers
{
    public class EmpleadoController : Controller
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(EmpleadoController));

        #region Accion
        public ActionResult Index()
        {

            var empleados = new BSEmpleado().ObtenerEmpleados();
            ViewBag.Resultado = empleados;

            return View("EmpleadoList");
        }

        public ActionResult Nuevo()
        {
            return View("EmpleadoDetalle");
        }

        public ActionResult Modificar(EmpleadoViewModel modelo)
        {
            try
            {
                var unEmpleado = new BSEmpleado().Get(new Empleado { IdEmpleado = modelo.IdEmpleado });
                modelo.Nombre= unEmpleado.Nombre;
                modelo.Apellido= unEmpleado.Apellido;
                modelo.Alias = unEmpleado.Alias;

            }
            catch (Exception ex)
            {

                log.Error("Ocurrio un error en la presentacion de Guardar", ex);
                ModelState.AddModelError("ErrorMensaje", "Ocurrio un error al registrar esta accion.");
            }
            return View("EmpleadoDetalle", modelo);
        }

        public ActionResult Guardar(EmpleadoViewModel modelo)
        {
            try
            {
                BSEmpleado bsEmpleado = new BSEmpleado();

                if (modelo.IdEmpleado != 0)
                {
                    var unEmpleado = bsEmpleado.Get(new Empleado{ IdEmpleado = modelo.IdEmpleado});
                    unEmpleado.Nombre = modelo.Nombre;
                    unEmpleado.Apellido = modelo.Apellido;
                    unEmpleado.Alias = modelo.Alias;

                    bsEmpleado.Update(unEmpleado);
                }
                else
                {
                    Empleado unEmpleado = new Empleado();
                    unEmpleado.Nombre = modelo.Nombre;
                    unEmpleado.Apellido= modelo.Apellido;
                    unEmpleado.Alias = modelo.Alias;

                    bsEmpleado.Save(unEmpleado);
                }

                BSEmpleado.Confirmar();
            }
            catch (Exception ex)
            {
                log.Error("Ocurrio un error en la presentacion de Guardar", ex);
                ModelState.AddModelError("ErrorMensaje", "Ocurrio un error al registrar esta accion.");
            }

            return RedirectToAction("Index");
        }

        [HttpPost]
        public ActionResult Eliminar(EmpleadoViewModel modelo)
        {
            try
            {
                Empleado dtoParte = new Empleado { IdEmpleado = modelo.IdEmpleado };
                //dtoParte.IdEmpleado = ;
                new BSEmpleado().Delete(dtoParte);
                BSEmpleado.Confirmar();
            }
            catch (Exception ex)
            {
                log.Error("Ocurrio un error en la presentacion de Eliminar", ex);
                ModelState.AddModelError("ErrorMensaje", "Ocurrio un error al registrar esta accion.");
            }
            return RedirectToAction("Index");
        }
        #endregion

    }
}
